//
// Created by JYL on 2023-11-28.
//
#include "encoder.h"
#include "tim.h"

int Encoder_Left,Encoder_Right;     //左右编码器的脉冲计数
int Motor_Left,Motor_Right;         //电机PWM变量 应是Motor的 向Moto致敬

/* Function : Read encoder count per unit time
 * Input    : Timer
 * Output   : Encoder_TIM
 * */
int Read_Encoder(u8 TIMX)
{
    int Encoder_TIM;
    switch (TIMX) {
        case 3:Encoder_TIM=(short)TIM3->CNT;    TIM3->CNT=0;
            break;
        case 4:Encoder_TIM=(short)TIM4->CNT;    TIM4->CNT=0;
            break;
        case 8:Encoder_TIM=(short)TIM8->CNT;    TIM8->CNT=0;
            break;
        default:Encoder_TIM=0;
    }
    return Encoder_TIM;
}
/**************************************************************************
Function: PWM limiting range
Input   : IN：Input  max：Maximum value  min：Minimum value
Output  : Output
函数功能：限制PWM赋值
入口参数：IN：输入参数  max：限幅最大值  min：限幅最小值
返回  值：限幅后的值
**************************************************************************/
int PWM_Limit(int IN,int max,int min)
{
    int OUT = IN;
    if(OUT>max) OUT = max;
    if(OUT<min) OUT = min;
    return OUT;
}
/**************************************************************************
Function: Assign to PWM register
Input   : motor_left：Left wheel PWM；motor_right：Right wheel PWM
Output  : none
函数功能：赋值给PWM寄存器
入口参数：左轮PWM、右轮PWM
返回  值：无
**************************************************************************/
void Set_Pwm(int motor_left,int motor_right){
    if(motor_left>0){
        PWMA_IN1=7200;
        PWMA_IN2=7200-motor_left;   //左轮前进
    }else{
        PWMA_IN1=7200+motor_left;   //左轮后退
        PWMA_IN2=7200;
    }
    if(motor_right>0){
        PWMB_IN1=7200-motor_right;   //右轮前进
        PWMB_IN2=7200;
    }else{
        PWMB_IN1=7200;
        PWMB_IN2=7200+motor_right;   //右轮后退
    }
}
